/**
 * @author Zvonimir Pavlić
 */


function parseStockData(stockData){
	var innerDataRegex = new RegExp("<m([0-9]+):([0-9]+)[^>]*>([^<]+)</m>", "ig"); //checks for GYROS data format
	if (stockData.match(innerDataRegex) == null) {
		return null;
	}
	data = RegExp.$3;
	data = data.toString();
	columns = RegExp.$2;
	
	var AOPRegex = new RegExp(".*?AOP[^|]*.(.*)", "ig");
	
	data.match(AOPRegex);
	
	alignedData = RegExp.$1; //now we now that AOP numbers are at intervals specified by columns number (if columns=4
	//by skipping 4 items at a time we will surely hit the next number in sequence eventually
	
	
	var elementsToSkip = (columns - 1).toString();
	var skipRowRegex = new RegExp("([^|]*.){" + elementsToSkip + "}([^|]*).(.*)", "i"); //this one will remove one row from the data table
	var firstElementRegex = new RegExp("^([^|]*)", "i")
	
	nextAOP = 1;
	var aopString = "<br>";
	while (alignedData != "") {
		alignedData.match(skipRowRegex);
		
		currentAOP = RegExp.$2; //will be either an AOP neumber (relevant) or simething else (irelevant)
		dataBehindAOP = RegExp.$3;
		
		if (currentAOP == nextAOP) //if we hit the next AOP number in sequence, we need to memorise the first cell to the right of it
		{
			dataBehindAOP.match(firstElementRegex);
			currentAOPData = RegExp.$1;
			aopString += currentAOPData + "|";
			nextAOP++;
		}
		
		alignedData = dataBehindAOP;
		
	}
	
	return aopString;
	//AOP = aopString.split("|");
}

function IzracunParametara(podatci, inacica)
{
	var AOP = new Array;
	var odnosDugorocnogDuga;
	var odnosDugaiGlavnice;
	var ukupnaZaduzenost;
	var relativnaZaduzenost;
	var pokriceKamata;
	var izlaz;
	
	AOP = podatci.toString().split("|");
	
	//izračunavanje za stari format zapisa ulaznih podataka
	if (inacica.toString() == "1") 
	{
		odnosDugorocnogDuga = parseFloat(AOP[22])/ (parseFloat(AOP[22] + parseFloat(AOP[16])));
		odnosDugaiGlavnice 	= parseFloat(AOP[22])/ parseFloat(AOP[16]);
		ukupnaZaduzenost 	= ( parseFloat(AOP[22]) + parseFloat(AOP[23]))/ parseFloat(AOP[16]);
		relativnaZaduzenost = ukupnaZaduzenost;
		pokriceKamata		= (parseFloat(AOP[51]) + parseFloat(AOP[48]))/ parseFloat(AOP[48]);
		
	}
	//izračunavanje za novi format zapisa ulaznih podataka
	else
	{
		odnosDugorocnogDuga = parseFloat(AOP[28])/ (parseFloat(AOP[28] + parseFloat(AOP[17])));
		odnosDugaiGlavnice 	= parseFloat(AOP[28])/ parseFloat(AOP[17]);
		ukupnaZaduzenost 	= (parseFloat(AOP[28]) + parseFloat(AOP[29]))/ (parseFloat(AOP[28] + parseFloat(AOP[29]) + parseFloat(AOP[17])));
		relativnaZaduzenost = (parseFloat(AOP[28]) + parseFloat(AOP[29]))/ parseFloat(AOP[17]);
		pokriceKamata		= (parseFloat(AOP[64]) + parseFloat(AOP[65]) + parseFloat(AOP[57]))/ parseFloat(AOP[57]);
	}
	
	//zapisivanje izračunatih parametara u GYROS zapis
	izlaz = "<m5:2; 0s>odnos dugorocnog duga|" + odnosDugorocnogDuga.toString() 
			+ "|odnos duga i glavnice|" + odnosDugaiGlavnice.toString()
			+ "|ukupna zaduzenost|" + ukupnaZaduzenost.toString()
			+ "|relativna zaduzenost|" + relativnaZaduzenost.toString()
			+ "|pokrice kamata|" + pokriceKamata.toString()
			+ "</m>";
			
	return izlaz;
	
}

function Glavni(parametar)
{
	var ulaz = document.getElementById("ulaz");
	var izlaz = document.getElementById("izlaz");
	var tekst = new String(ulaz.value);

	//postavljanje inačice zapise ulaznih podataka
	if(document.getElementById("1").checked) inacica = 1
		else inacica = 2;
	
	//izračunavanje parametara i zapisivanje istih u izlazni okvir
	izlaz.value = IzracunParametara(parseStockData(tekst), inacica);
	
	//var odjeljak = document.getElementById("odjeljak");
	

}
